# 正确的insert_trade_record函数实现

import sqlite3
import time
from rich import console
import logging

# 初始化控制台对象
console = console.Console()

# 请将以下函数替换到所有程序文件中
def insert_trade_record(symbol, direction, offset, volume, price, reason):
    """
    将交易记录插入到数据库中
    
    参数:
    symbol: 产品名称
    direction: 交易方向 (BUY/SELL)
    offset: 开平方向 (OPEN/CLOSE)
    volume: 交易量
    price: 交易价格
    reason: 交易原因
    
    返回:
    bool: 插入是否成功
    """
    try:
        # 获取当前时间
        current_time = time.strftime('%Y-%m-%d %X')
        
        # 连接到SQLite数据库
        conn = sqlite3.connect('trade_monitor.db')
        cursor = conn.cursor()
        
        # 参数化插入SQL语句 - 使用正确的表结构
        insert_sql = '''
            INSERT INTO trade_records (
                product_name, direction, offset, volume, price, reason, timestamp, created_at
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        '''
        
        # 执行插入 - 确保参数顺序正确
        cursor.execute(insert_sql, (
            symbol,      # product_name
            direction,   # direction
            offset,      # offset
            volume,      # volume
            price,       # price
            reason,      # reason
            current_time,# timestamp
            current_time # created_at
        ))
        
        # 提交事务
        conn.commit()
        
        # 关闭连接
        conn.close()
        
        # 打印成功信息到控制台
        try:
            console.print(f"交易记录已成功插入数据库: {symbol}, {direction}, {offset}, {volume}, {price}", style="bold green")
        except:
            print(f"交易记录已成功插入数据库: {symbol}, {direction}, {offset}, {volume}, {price}")
        
        logging.info(f"交易记录插入成功: {symbol}, {direction}, {offset}, {volume}, {price}")
        
        return True
        
    except Exception as e:
        try:
            console.print(f"记录交易到数据库时出错: {e}", style="bold red")
        except:
            print(f"记录交易到数据库时出错: {e}")
        
        logging.error(f"插入交易记录失败: {str(e)}")
        return False

# 使用示例
if __name__ == "__main__":
    # 配置日志
    logging.basicConfig(
        filename='trading_log.log',
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )
    
    # 测试插入
    success = insert_trade_record(
        symbol="RB2510",
        direction="BUY",
        offset="OPEN",
        volume=2.0,
        price=3850.0,
        reason="测试修复后的插入函数"
    )
    
    if success:
        print("测试插入成功！")
    else:
        print("测试插入失败！")

# 修复指南：
# 1. 请在所有包含insert_trade_record函数的.py文件中替换为此实现
# 2. 确保在每次交易操作（无论是开仓还是平仓）后都调用此函数
# 3. 确保传递的参数与函数定义一致，特别是offset参数（有些地方可能漏掉了）
# 4. 检查是否有交易场景下没有调用insert_trade_record的情况

# 特别注意：
# - 不要在函数中省略offset参数
# - 确保使用正确的表结构列名
# - 每次修改代码前请备份原文件